const jwt = require('jsonwebtoken')


function sign(option) {
    return jwt.sign(option, 'abc', { expiresIn: 86400 });
}

// 解析token
function verify() {
    return async (ctx, next) => {
        let token = ctx.request.headers.authorization
        if (token) {
            // 校验
            try {
                const decoded = jwt.verify(token, 'abc')
                if (decoded.id) { // 合法的 token
                    ctx.user_id = decoded.id
                    await next()
                }
            } catch (err) {
                ctx.body = {
                    code: 401,
                    data: null,
                    msg: 'token 已过期'
                }
            }
        } else {
            ctx.body = {
                code: 401,
                data: null,
                msg: 'token 不存在'
            }
        }
    }
}
// function verify() {
//     return async (ctx, next) => {
//         let token = ctx.request.headers.authorization;
//         if (!token) {
//             ctx.body = { code: 401, data: null, msg: 'token 不存在' };
//             return;
//         }

//         try {
//             const decoded = jwt.verify(token, 'abc');
//             if (decoded.id) {
//                 ctx.user_id = decoded.id;
//                 await next();
//             } else {
//                 ctx.body = { code: 401, data: null, msg: 'token 无效' };
//             }
//         } catch (err) {
//             if (err.name === 'TokenExpiredError') {
//                 ctx.body = { code: 401, data: null, msg: 'token 已过期' };
//             } else {
//                 ctx.body = { code: 401, data: null, msg: 'token 校验失败' };
//             }
//         }
//     };
// }


module.exports = {
    sign,
    verify
}